package com.br.semperparata.pag_fbb_rj.entity;

import java.util.ArrayList;
import java.util.List;

public class Momento {
	private String nome;
	private String descricao;
	private List<Atividade> atividades;
	private int duracao;
	private int ordem;
	private List<Ramo> ramos;
	
	public Momento(String nome, String descricao, List<Atividade> atividades,
			int duracao, int ordem, String ramos) {
		super();
		this.nome = nome;
		this.descricao = descricao;
		this.atividades = atividades;
		this.duracao = duracao;
		this.ordem = ordem;
		setRamos(ramos);
	}
	
	public Momento(String nome, String descricao, int ordem) {
		super();
		this.nome = nome;
		this.descricao = descricao;
		this.ordem = ordem;
	}
	
	public Momento(String nome, int ordem) {
		super();
		this.nome = nome;
		this.ordem = ordem;
	}
	
	public String getNome() {
		return nome;
	}

	public String getDescricao() {
		return descricao;
	}

	public List<Atividade> getAtividades() {
		if (atividades == null)
			atividades = new ArrayList<Atividade>();
		return atividades;
	}
	
	public Atividade addAtividade(Atividade atividade) {
		atividade.setMomento(this);
		getAtividades().add(atividade);
		return atividade;
	}

	public int getDuracao() {
		duracao = somaDuracaoAtividades();
		return duracao;
	}
	
	public String getDuracaoString() {
		getDuracao();
		int h = (duracao / 3600);
		String hr = duracao > 3600 ? h + "h" : "";
		int m = ((duracao % 3600) / 60);
		String min = (duracao % 3600) > 0 ? m + "min" : "";
		if (min != "" && m < 10)
			min = "0" + min;
		int s = ((duracao % 3600) % 60);
		String seg = ((duracao % 3600) % 60) > 0 ? s + "s" : "";
		if (s < 10)
			seg = "0" + seg;
		
		String saida = hr;
		if (saida.length() > 0)
			saida += " ";
		saida += min;
		if (saida.length() > 0)
			saida += " ";
		saida += seg;
		
		return saida;
	}

	public int getOrdem() {
		return ordem;
	}

	public List<Ramo> getRamos() {
		return ramos;
	}
	
	public void setRamos(String ramos) {
		if (ramos == null)
			return;
		
		String[] split = ramos.split(";");
		this.ramos = new ArrayList<Ramo>();
		
		for (String r : split) {
			Ramo ramo = null;
			try {
				ramo = Ramo.valueOf(r);
			} catch (Exception e) {}
			if (ramo != null)
				this.ramos.add(ramo);
		}
	}
	
	private int somaDuracaoAtividades() {
		int d = 0;
		if (atividades != null) {
			for (Atividade atividade : atividades) {
				d+= atividade.getDuracao();
			}
		}
		return d;
	}
	
	@Override
	public String toString() {
		return getNome();
	}
}
